package com.oristand.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.oristand.pojo.Product;
import com.oristand.pojo.vo.ProductVo;

import java.util.List;

/**
 * 操作商品对象的service接口
 *
 * @author shiyjian
 * @version 1.0
 * @date 2021/11/29 14:36
 */
public interface ProductService {

    /**
     * 根据id查询单个商品的全部信息
     *
     * @return 返回商品对象
     */
    ProductVo findProductVoById(Integer productId);


    /**
     * 查询所有的商品(包括厂商信息和属性信息),没有分页
     *
     * @return 返回商品列表List
     */
    List<ProductVo> findProductVoList();

    /**
     * 根据商品id更新商品
     *
     * @param product 商品对象
     * @return 影响的行数
     */
    int updateProductById(Product product);

    /**
     * 根据商品id删除商品
     *
     * @param id 商品id
     * @return 影响的行数
     */
    int deleteProductById(Integer id);

    /**
     * 添加商品
     *
     * @param product 商品对象
     * @return 影响的行数
     */
    Product insertProduct(Product product);

    /**
     * 商品的分页查询
     *
     * @param page 当前页
     * @param size 每一页的大小
     * @return 返回分页数据
     */
    Page<ProductVo> findProductByPage(Integer page, Integer size);

    /**
     * 商品的模糊查询
     *
     * @param str 查询关键字
     * @return 返回全部的商品集合
     */
    List<ProductVo> findProductVoLikeSkuOrName(String str);
}
